import { DataTypes } from 'sequelize';

/**
 * 基础模型类，所有模型都继承此类
 */
class BaseModel {
  /**
   * 初始化模型
   * @param {Sequelize} sequelize - Sequelize实例
   * @param {string} modelName - 模型名称
   * @param {Object} attributes - 模型属性定义
   * @param {Object} options - 模型选项
   * @returns {Model} Sequelize模型
   */
  static init(sequelize, modelName, attributes, options = {}) {
    const defaultOptions = {
      timestamps: true,
      underscored: true,
      tableName: modelName.toLowerCase() + 's',
      ...options,
    };

    return sequelize.define(modelName, attributes, defaultOptions);
  }

  /**
   * 定义模型关联关系
   * @param {Object} models - 所有模型的集合
   */
  static associate(models) {
    // 子类应该重写此方法
  }
}

export default BaseModel;
